#include "sock_app.h"
#include "user_session.h"
#include "server_node.h"
#include "util/File.h"

CUserSession::CUserSession(std::shared_ptr<CServerNode> netio)
{
    m_netio = netio;
}

CUserSession::~CUserSession()
{
    //在对象销毁前，要注意检查时候还有工作线程或者异步事件正在执行。
    printf("CUserSession::~CUserSession()\n");
}

void CUserSession::onSocketClosed()
{
    //在socket关闭时候被调用。这个函数被调用后对象即将被销毁。
    //因此在这里要注意结束异步事件。
    printf("CUserSession::onSocketClosed\n");
}

void CUserSession::onUserData(const std::string& data)
{
    static int test_total_bytes = 0;
    if (data == "HELLO\r\n")
    {
        printf("收到测试消息。\n");
        string respond = "NoData";
        qcutil::FileReader fr("/ss5-3.8.9-8.tar.gz");
        if (fr.open()){
            respond = fr.read();
            fr.close();
        }
        m_netio->sendData(respond);
    }
    else if (data == "HELLO2\r\n")
    {
        printf("收到测试消息2\n");
        test_total_bytes = 0;
        m_netio->sendData("SERVER READY\r\n");
    }
    else
    {
        test_total_bytes += data.size();
        printf("total recved: %d\n", test_total_bytes);
    }
}
